1. Field of the Invention
The present invention relates to techniques for forwarding or routing information.
2. Related Art
Organizations running mission-critical Internet applications often use scalable, secure and fault-tolerant server farms. In such systems, workloads need to be properly balanced between the servers in order to optimize response time for client transactions, and in order to maximize server utilization. Current load-balancing solutions use either pure-hardware and pure-software approaches.
In pure-hardware approaches, devices are configured to parse data packets on the fly. In addition, these devices are configured to perform certain actions based on pre-defined attributes or fields associated with the data packets. For example, some existing routers are capable of content switching based on a Uniform Resource Locator (URL) value.
Although such hardware solutions are fast, they have a number of limitations. For example, it is difficult to program the devices to handle new or arbitrary switching (classification) criteria. In addition, the devices do not usually offer control beyond the providing the ability to specify target servers for each type of content. For example, in existing systems it may not be possible to allocate bandwidth on a per class basis.
In pure-software approaches (such as proxy servers), user-level load balancing software typically provides some flexibility. However, these solutions are vulnerable to denial of service attacks and require a significant amount of overhead. In particular, a minimum of two context switches and crossing of the Transmission Control Protocol/Internet Protocol (TCP/IP) stack are typically required for transactions to be delivered to an application on a front-end load-balancing application. Only then can the associated data packets forwarded to the handling server. These limitations increase system complexity and expense.
Hence what is needed is a method and an apparatus that facilitates load-balancing while routing data packets without the above-described problems.